Apparently required back in the earliest days of Xen, we now properly
initialise CPU capabilities early during bootstrap. Re-writing
capability data later now causes problems if specific features have
been deliberately masked out.
Thanks to Weidong Han at Intel for finding such a bug where XSAVE
feature is masked out by default, but then erroneously written back
during VMX initialisation. This would cause memory corruption problems
during boot for XSAVE-capable systems.
Signed-off-by: Keir Fraser <keir@xen.org>
struct hvm_function_table * __init start_svm(void)
{
- /* Xen does not fill x86_capability words except 0. */
- boot_cpu_data.x86_capability[5] = cpuid_ecx(0x80000001);
-
if ( !test_bit(X86_FEATURE_SVME, &boot_cpu_data.x86_capability) )
return NULL;
struct hvm_function_table * __init start_vmx(void)
{
- /* Xen does not fill x86_capability words except 0. */
- boot_cpu_data.x86_capability[4] = cpuid_ecx(1);
-
if ( !test_bit(X86_FEATURE_VMXE, &boot_cpu_data.x86_capability) )
return NULL;